package types

import "time"

// BaseResponse 基础响应结构
type BaseResponse struct {
	Code    int         `json:"code"`
	Message string      `json:"message"`
	Data    interface{} `json:"data,omitempty"`
}

// PaginationResponse 分页响应
type PaginationResponse struct {
	Total    int64       `json:"total"`
	Page     int         `json:"page"`
	PageSize int         `json:"page_size"`
	List     interface{} `json:"list"`
}

// VoucherResponse 优惠券响应
type VoucherResponse struct {
	Id        int64     `json:"id"`
	VoucherId string    `json:"voucher_id"`
	Title     string    `json:"title"`
	Amount    float64   `json:"amount"`
	Stock     int       `json:"stock"`
	BeginTime time.Time `json:"begin_time"`
	EndTime   time.Time `json:"end_time"`
	Status    string    `json:"status"` // upcoming, active, expired
}

// VoucherDetailResponse 优惠券详情响应
type VoucherDetailResponse struct {
	VoucherResponse
	Notified   int8      `json:"notified"`
	CreateTime time.Time `json:"create_time"`
	UpdateTime time.Time `json:"update_time"`
}

// VoucherStockResponse 优惠券库存响应
type VoucherStockResponse struct {
	VoucherId string `json:"voucher_id"`
	Stock     int    `json:"stock"`
}

// SeckillResponse 秒杀响应
type SeckillResponse struct {
	Success bool   `json:"success"`
	Message string `json:"message"`
	OrderId *int64 `json:"order_id,omitempty"`
}

// OrderResponse 订单响应
type OrderResponse struct {
	Id         int64      `json:"id"`
	UserId     int64      `json:"user_id"`
	VoucherId  int64      `json:"voucher_id"`
	PayTime    *time.Time `json:"pay_time"`
	UseTime    *time.Time `json:"use_time"`
	Status     int8       `json:"status"`
	StatusText string     `json:"status_text"`
	CreateTime time.Time  `json:"create_time"`
	UpdateTime time.Time  `json:"update_time"`
}

// OrderDetailResponse 订单详情响应
type OrderDetailResponse struct {
	OrderResponse
	Voucher *VoucherResponse `json:"voucher,omitempty"`
}

// HealthResponse 健康检查响应
type HealthResponse struct {
	Status    string    `json:"status"`
	Timestamp time.Time `json:"timestamp"`
	Version   string    `json:"version"`
}
